class: inverse,left, middle background-image: url(data:image/png;base64,#background.png) background-size: cover <img src="data:image/png;base64,#LOGO_DIPLOMADO.png" width="500px"/> ##Módulo 2: Percepción remota satelital óptica ### Detección y analisis de cambios Gabriel Castro gabriel.castro.b@pucv.cl</a><br> .large[<b><a href="https://www.pucv.cl/uuaa/site/edic/base/port/labgrs.html">LabGRS</a> | Septiembre 2022</b>] <br> --- class: center,middle background-image: url(data:image/png;base64,#labgrs_logo.png) background-size: 35% --- ## ¿Qué aprenderemos en esta unidad? Aprenderemos ... -- 1) Indices espectrales. (✓) -- 2) Clasificación no supervisada. (✓) -- 3) Clasificación supervisadas. (✓) -- 4) Detección y análisis de cambios. (✓) --- #### ¿Que entendemos por analisis de detección de cambios espaciales? .pull-left[ >Dicho en palabras simples, corresponde a la detección de perturbaciones sobre distintos objetos, coberturas y usos de suelo en una ventana de tiempo especifica. > ] --  --- ### Detección de cambios usando imágenes (raster) de variables continuas ##### La detección de cambios implica encontrar diferencias en la superficie terrestre a través del estudio de 2 o más imágenes. Por ejemplo, si queremos evaluar la cantidad de vegetación que se quemó después de un incendio, necesitaremos una imagen con información del “estado de la vegetación” antes y después del incendio. Por ejemplo, se puede calcular algún índice sensible a la presencia y cantidad de vegetación (ej. NDVI, sensible a la biomasa fotosintéticamente activa) para cada imagen y luego restar ambas imágenes. -- ##### Se resta una condición anterior de la superficie de estudio con una condición más actual, con lo que se obtiene como resultado de la resta que aquellos valores más altos es dónde hubo mayor cambio.  --- ### Orden de resta N°2 -- **Se resta una condición actual de la superficie de estudio con una condición anterior, con lo que se obtiene como resultado de la resta que aquellos valores más bajos es dónde hubo mayor cambio.**  --- ### Detección de cambios con usando imágenes (raster) de variables categóricas. > Cada pixel de mi raster esta asociado a una categoría. Podemos como se mueven las clases de una hacia otra en el tiempo. > cuantificar el cambio de coberturas y usos de suelo. (m2, Ha, Km2)  --- ### Materiales clase: > Mapa Landcover Maule Verano 2020 > > Mapa Landcover Maule Verano 2022 (Raster que crearon durante la clasificación) ####Librerias R: ```r library(raster) ``` --   --- ### Carguemos nuestros archivos. ```r P_2020<- raster("clasificacion_maule_2020.tif") # Mapa clasificado 2020 print(P_2020) ``` ``` ## class : RasterLayer ## dimensions : 494, 964, 476216 (nrow, ncol, ncell) ## resolution : 30, 30 (x, y) ## extent : 280200, 309120, 6040800, 6055620 (xmin, xmax, ymin, ymax) ## crs : +proj=utm +zone=19 +south +datum=WGS84 +units=m +no_defs ## source : clasificacion_maule_2020.tif ## names : clasificacion_maule_2020 ## values : 1, 6 (min, max) ``` ```r P_2022<- raster("clasificacion_maule_2022.tif") # Mapa clasificado 2022 print(P_2022) ``` ``` ## class : RasterLayer ## dimensions : 494, 964, 476216 (nrow, ncol, ncell) ## resolution : 30, 30 (x, y) ## extent : 280200, 309120, 6040800, 6055620 (xmin, xmax, ymin, ymax) ## crs : +proj=utm +zone=19 +south +datum=WGS84 +units=m +no_defs ## source : clasificacion_maule_2022.tif ## names : clasificacion_maule_2022 ## values : 1, 6 (min, max) ``` --- ```r plot(P_2020, main = "mapa Maule 2020") ``` <img src="data:image/png;base64,#Aplicaciones_cambios_files/figure-html/unnamed-chunk-3-1.png" width="100%" /> --- ```r plot(P_2022, main = "mapa Maule 2022") ``` <img src="data:image/png;base64,#Aplicaciones_cambios_files/figure-html/unnamed-chunk-4-1.png" width="100%" /> --- ### Calculo de área por clases de uso y covertura de suelo. ### Verano 2020 ```r vals_2020 <- getValues(P_2020) #extraigo mis valores de mi raster tabla_2020 <- as.data.frame(vals_2020[!is.na(vals_2020)]) #remuevo NA tabla_2020 <- as.data.frame(table(tabla_2020)*30*30/1000000) print(tabla_2020) ``` ``` ## tabla_2020 Freq ## 1 1 30.8412 ## 2 2 63.9108 ## 3 3 45.7920 ## 4 4 163.7541 ## 5 5 17.4600 ## 6 6 105.2289 ``` -- **Clase 5 = ROCAS y GRAVAS corresponde a la clase menos extensa con 17 km2.** -- **Clase 4 = BOSQUE corresponde a la cobertura mas extensa con 163 Km2.** -- **Clase 1 = AGUA es la segunda clase mas pequeña con 30 Km2.** --- ### Verano 2022 ```r vals_2022 <- getValues(P_2022) #extraigo mis valores de mi raster tabla_2022 <- as.data.frame(vals_2022[!is.na(vals_2022)]) #remuevo NA tabla_2022 <- as.data.frame(table(tabla_2022)*30*30/1000000) print(tabla_2022) ``` ``` ## tabla_2022 Freq ## 1 1 40.3740 ## 2 2 37.2609 ## 3 3 60.2298 ## 4 4 152.7795 ## 5 5 27.6993 ## 6 6 108.6426 ``` -- **Clase 1 = AGUA, Se observó un aumento en el espejo de agua.** -- **Clase 4 = BOSQUE presentó una ligera disminución.** -- **Clase 6 = PRADERA Y MATORRAL presentó las menores variaciones.** --- ### Detección de cambios en el Agua. #### PASO 1: RECLASIFICACION #### Se reclasifican los valores de AGUA (1) para poder identificar los cambios sin que se confundan con otros cambios de cobertura. Por ejemplo: si en el mapa de 2020 había uso BOSQUE (4) y en el mapa de 2022, ese uso pasó a ser SUELO DESNUDO (2) la diferencia es 2. Pero si a la vez hay un uso de ROCAS Y GRAVAS (5) y pasó a ser ZONA AGRICOLA (3) la diferencia también será de 2. Entonces se debe reclasificar para que las diferencias entre clases tengan valores únicos que puedan ser posteriormente identificados, tal como sale a continuación: ```r P_2020[P_2020==1]<-100 #Todos aquellos valores = 1 se reclasificaran con 100 P_2020 P_2022[P_2022==1]<-110 #Todos aquellos valores = 1 se reclasificaran con 110 P_2022 ``` --- #### PASO 2: DIFERENCIA (ALGEBRA DE RASTER) ```r dif <- P_2020 - P_2022 plot(dif) ``` <img src="data:image/png;base64,#Aplicaciones_cambios_files/figure-html/unnamed-chunk-8-1.png" width="100%" /> --- #### PASO 3: OBSERVAR LAS DIFERENCIAS POR CLASES. ```r vals <- getValues(dif) #extraigo mis valores de mi raster de diferencia tabla <- as.data.frame(vals[!is.na(vals)]) #remuevo NA tabla <- as.data.frame(table(tabla)*30*30/1000000) print(tabla) ``` ``` ## tabla Freq ## 1 -108 2.1537 ## 2 -107 0.4167 ## 3 -106 0.0585 ## 4 -105 5.0148 ## 5 -104 1.9521 ## 6 -10 30.7782 ## 7 -4 10.1223 ## 8 -3 20.6622 ## 9 -2 15.5493 ## 10 -1 17.2647 ## 11 0 285.9561 ## 12 1 8.7777 ## 13 2 6.0705 ## 14 3 18.7596 ## 15 4 3.3876 ## 16 94 0.0243 ## 17 95 0.0027 ## 18 96 0.0243 ## 19 97 0.0027 ## 20 98 0.0081 ``` --- ###¿Como puedo trabajar estos cambios de forma rapida y automatica? #### Salgamos de R por un momento Y volvamos a Qgis  > El complemento Semi-Automatic Classification Plugin (SCP siglas en inglés) es un repositorio de código abierto y libre acceso para QGIS que permite la clasificación semi-automática de imágenes de sensores remotos (también conocida como clasificación supervisada). Proporciona adicionalmente otras herramientas como descarga de imágenes satelitales disponibles sin costo, el pre-procesamiento de imágenes y calculadora ráster, entre otras. > > El objetivo principal de SCP es proporcionar un conjunto de herramientas interrelacionadas para el procesamiento ráster con el fin de hacer un flujo de trabajo automático y facilitar la clasificación de la cobertura del suelo, lo cual puede realizarse incluso por personas cuya área principal no es la teledetección. > --- ### Bibliografía. Wegmann M., Leutner B., Dech S. (2016) Remote Sensing and GIS for Ecologists Using Open Source Software. Ed. Pelagic Zhao, Y., Feng, D., Yu, L., Wang, X., Chen, Y., Bai, Y., Hernández Palma, H., Galleguillos Torres, M., Estades Marfán, C., Biging, G., Radke, J. y Gong, P. (2016). Detailed dynamic land cover mapping of Chile: Accuracy improvement by integrating multi-temporal data. Disponible en https://repositorio.uchile.cl/handle/2250/142288 Introducción — documentación de Semi-Automatic Classification Plugin, Disponible en https://semiautomaticclassificationmanual-v5.readthedocs.io/es/latest/introduction.html --- class: inverse middle 